package com.yuba.web.service;

import com.yuba.common.core.domain.model.RegisterBody;
import com.yuba.common.core.exception.ServiceException;
import com.yuba.common.core.utils.SpringUtils;

/**
 * 注册策略
 *      修改模板原来的注册方式为 设计模式中的 策略模式
 * @author modakai
 */
public interface IRegisterStrategy {

    String BASE_NAME = "RegisterStrategy";

    /**
     * 注册策略
     * @param body 注册对象
     */
    static void register(RegisterBody body, String userType) {
        // 获取系统注册策略的beanName
        String beanName =  userType + BASE_NAME;
        if (!SpringUtils.containsBean(beanName)) {
            throw new ServiceException("用户类型不正确!");
        }
        // 开启注册
        IRegisterStrategy registerStrategy = SpringUtils.getBean(beanName);
        registerStrategy.register(body);
    }

    /**
     * 注册
     * @param body 注册对象
     */
    public void register(RegisterBody body);

}
